package com.hmy.finance.service.receipt;


import com.hmy.finance.api.bo.core.request.receiptOffset.ReceiptOffsetAuditRequest;
import com.hmy.finance.api.bo.core.request.receiptOffset.ReceiptOffsetCancelRequest;
import com.hmy.finance.api.bo.core.request.receiptOffset.ReceiptOffsetRetractRequest;
import com.hmy.finance.api.bo.core.request.receiptOffset.ReceiptOffsetRevokeRequest;
import com.hmy.finance.api.bo.core.response.receiptOffset.ReceiptOffsetAuditResponse;
import com.hmy.finance.api.bo.core.response.receiptOffset.ReceiptOffsetCancelResponse;
import com.hmy.finance.api.bo.core.response.receiptOffset.ReceiptOffsetRetractResponse;
import com.hmy.finance.api.bo.core.response.receiptOffset.ReceiptOffsetRevokeResponse;

public interface ReceiptOffsetApprovalService {

    /**
     * 撤销收款核销申请
     */
    ReceiptOffsetRevokeResponse revokeReceiptOffset(ReceiptOffsetRevokeRequest receiptOffsetRevokeRequest);

    /**
     * 作废收款核销单申请
     */
    ReceiptOffsetCancelResponse cancelReceiptOffset(ReceiptOffsetCancelRequest receiptOffsetCancelRequest);

    /**
     * 审批通过/驳回收款核销申请（聚合所有审核节点）
     */
    ReceiptOffsetAuditResponse auditReceiptOffset(ReceiptOffsetAuditRequest receiptOffsetAuditRequest);

    /**
     * 退回收款核销申请
     */
    ReceiptOffsetRetractResponse retractReceiptOffset(ReceiptOffsetRetractRequest receiptOffsetRetractRequest);

    /**
     * 创建核销单申请,需要定义出入参
     */
    void createReceiptOffset(Object receiptOffsetFlowCreateDto);

    /**
     * 提交核销单申请(如有必要)
     */
    void submitReceiptOffset(Object receiptOffsetFlowSubmitDto);
}
